package cn.kgc.common.config.mybatis;

import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author kgc
 * MyBatisPlus的配置类
 */
@Configuration
public class MyBatisPlusConfig {
    /**
     * 分页插件
     * @return 分页插件对象
     *
     * @Bean注解的作用: 能够将方法的放回值交给Spring容器进行管理。在Spring容器中对应Bean的名字是方法的名字。
     */
    @Bean
    public  PaginationInterceptor paginationInterceptor(){
        return new PaginationInterceptor();
    }

    /**
     * 乐观锁插件
     * @return 乐观锁的对象
     * 表中的乐观锁就是个version字段。新增数据时version字段的默认值是1。如果更新了这条记录,version自动的+1
     *
     * 将设同时有两个请求更新一条记录,刚开始时这条记录的version是1。其中一个请求更新了这条记录以后,此时version的
     * 值就是2了。另一个请求在更新这条记录时,发现版本已经从1变成了2,另一个请求不能在更新这条记录了。
     */
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor(){
        return new OptimisticLockerInterceptor();
    }

}
